package main

import (
	"fmt"
)

/*
多态：一个接口的不同形态

接口 -- interface
崇尚鸭子类型  -- 去定义对象行为

定义接口：
type 接口名字 interface{
	方法1(参数列表)[返回值]
	方法2(参数列表)[返回值]
...
}
*/
type Pay_if interface {
	pay()
}

//空接口
type kong interface {

}

type ZFB struct {
	name string
}
type WX struct {
	name string
}
func (z *ZFB) pay() {
	fmt.Println("this is zfp pay")
}
func (w *WX) pay() {
	fmt.Println("this is wx pay")
}

func main(){
	z1 := ZFB{"zhifubao"}
	w1 := WX{"weixin"}
	sayhello(&w1)
	payment(&z1)

	m1 := map[string]kong{
		"name":"Sc",
		"age":18,
	}
	fmt.Println(m1)
	num := m1["age"].(int) + 10
	fmt.Printf("name type is %T\n", m1["name"])
	fmt.Printf("age type is %T\n", m1["age"])
	fmt.Println(num)
}
func payment(p Pay_if){
	p.pay()
}
func sayhello(k kong){
	fmt.Println("hello")
}